package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Calendar;

import javax.swing.JOptionPane;

import modelo.Equipo;
import modelo.Arbitro;
import modelo.Jugador;
import modelo.Partido;
import modelo.Liga;


//import modelo.ventanaRegistrar;
import vista.VentanaPrincipal;



	public class ControladorVentanaPrincipal implements ActionListener{
        private Liga liga;
      //  private Partido partido;
		private Equipo equipo[];
		private Arbitro arbitro[];
		private VentanaPrincipal ventanaPrincipal; 
       	Partido partidos;
        Calendar fecha = Calendar.getInstance();
		private ArrayList<Partido>partido =new ArrayList<Partido>();
		
		private static final String Goles[] = {"0", "1", "2", "3", "4", "5"};
		
		public ControladorVentanaPrincipal() {
			ventanaPrincipal= new VentanaPrincipal();
			ventanaPrincipal.setLocationRelativeTo(null);
			ventanaPrincipal.setVisible(true);	
			ventanaPrincipal.agregarListener(this);
			liga = new Liga();
		}
		
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			ControladorVentanaArbitro controladorVentanaArbitro;
			ControladorVentanaEquipo controladorVentanaEquipo;
			ControladorVentanaCalendario controladorVentanaCalendario;
		
			if (e.getActionCommand().equalsIgnoreCase("Registrar Arbitro")){ 
				controladorVentanaArbitro= new ControladorVentanaArbitro(liga);	
			}	

			if	(e.getActionCommand().equalsIgnoreCase("Registrar Equipo")){
			controladorVentanaEquipo= new ControladorVentanaEquipo(liga);
			}
			
			if (e.getActionCommand().equalsIgnoreCase("Generar Partidos")){
			 if(liga.contarEquipos()%2 == 0){
				if(liga.contarArbitros()>=liga.contarEquipos()/2){
					Partido partido = new Partido();
					generarPartido(partido);
				}
				else{
				 ventanaPrincipal.mostrarMensaje("no hay suficientes Arbitros");
				}
			 }
			 else{
					ventanaPrincipal.mostrarMensaje("El numero de Equipos debe ser par");
				}
			}
			if (e.getActionCommand().equalsIgnoreCase("Calendario")){
				Partido partido = new Partido();
				controladorVentanaCalendario = new ControladorVentanaCalendario(liga);
			}
			if (e.getActionCommand().equalsIgnoreCase("Salir")){
				setDefaultCloseOperation(0);
			}
		}
		//Metodo para Generar Partidos Aleatorios
		public void generarPartido (Partido partido) {
			
			try {
			
			 for (int i=0;i<liga.getEquipos().size();i++){
			 partido.setEquipoCasa(liga.getEquipos().get(i));
			 for (int j=0;j<liga.getEquipos().size();j++){
				 if(j!=i){
			 partido.setEquipoVisitante(liga.getEquipos().get(j));
		     
			
					// ventanaPrincipal.mostrarMensaje("Partido Casa Vs Visitante:  "+partido.getEquipoCasa().getNomEquipo() +  "  vs  "+partido.getEquipoVisiante().getNomEquipo());
			 
			 generarArbitro();
			 fecha.add(Calendar.DAY_OF_MONTH, +7); 
			 partido.setFecPartido(fecha.getTime());
			 generarGoles(partido);
			// ventanaPrincipal.mostrarMensaje("El partido se jugara en la fecha: " +fecha.getTime());
		 	
			 
			 }
				 
			}
		}
			 
			
			
	}
			
			 catch(Exception e) {
					ventanaPrincipal.mostrarMensaje("No puede Generar un Partido sin Cargar Equipos");
				 
			 }
		}
		//Metodo para Generar Arbitros Aleatorios
			public void  generarArbitro(){
				try{
				 int IndiceArbitro= (int)Math.floor(Math.random()*liga.contarArbitros());
				 Arbitro arbitro = liga.getArbitro().get(IndiceArbitro);
			//	 ventanaPrincipal.mostrarMensaje("El arbitro es: " +arbitro.getNombre());
				}
				catch(Exception e) {
					//ventanaPrincipal.mostrarMensaje("Hay un error en algo");
		
				}
			}
			//Metodo para Generar Goles Aleatorios
			public void generarGoles(Partido partido){
				
				try{

				   	String codPartido = "00"+liga.contarPartidos();
					 Equipo equipoCasa = partido.getEquipoCasa();
					 Equipo equipoVisitante = partido.getEquipoVisiante();
		     		 Arbitro arbitro = partido.getArbitro(); 
					 
					
					 
	         		int indiceGol1= (int)Math.floor(Math.random()*6);
					int indiceGol2=(int)Math.floor(Math.random()*6);
					String goles1 = Goles[indiceGol1];
					String goles2 = Goles[indiceGol2];
					//partido.setGolesCasa(goles1);
					//partido.setGolesVisitante(goles2);
					Partido partidos = new Partido (codPartido,fecha.getTime(), equipoCasa, equipoVisitante, goles1, goles2, arbitro);
					liga.setPartidos(partidos);
					//System.out.println("Partidos " +liga.contarPartidos());
					//ventanaPrincipal.mostrarMensaje("los goles son: "  +partido.getMarcadorFinal());
				
					
				}
			
				catch(Exception e) {
				//	ventanaPrincipal.mostrarMensaje("Hay un error en algo");
				}
			}
			
			private void setDefaultCloseOperation(int exitOnClose) {
				// TODO Auto-generated method stub
				System.exit(0); 
				setDefaultCloseOperation(ventanaPrincipal.EXIT_ON_CLOSE);
			}
		
		
	
	}
				
	
	
		

	
